Cloud-based applications are software applications that employ services available over the Internet or over some other network to assist the applications in performing their tasks. In a typical scenario, a user installs a frontend client (e.g., an “app”) on a client device, which connects to a backend server over the Internet. The frontend client typically manages a user interface and performs local processing on the client device, whereas the backend server may access large databases, store user data, and perform computationally intensive tasks. Users currently enjoy a wide variety of cloud-based applications, including applications for data storage, video streaming, web conferencing, mapping, banking, and many others.
A common type of cloud-based application provides user data storage in the cloud. For example, a user installs a data storage client on the user's device and designates a local folder for storing files. Any time the user adds a file to the local folder, the data storage client automatically uploads the file to a backend system running in the cloud. The user may install a similar data storage client for the same application on other devices, and the backend system coordinates with the different devices to ensure that the devices all share the same files and file versions.